package com.hj.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.Properties;

/**
 * @author < a href="huajian2018@aliyun.com">hj</ a>
 * @Description 图片验证码
 */
@Component
public class KaptchaConfig {

    @Bean
    public DefaultKaptcha defaultKaptcha() {
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        //图片边框
        properties.setProperty("kaptcha.border", "no");
        //边框颜色
        properties.setProperty("kaptcha.border.color", "105,179,90");
        //边框厚度,默认1
        properties.setProperty("kaptcha.border.thickness", "1");

        //图片宽度
        properties.setProperty("kaptcha.image.width", "110");
        //图片高度
        properties.setProperty("kaptcha.image.height", "40");
        //图片实现类,默认	com.google.code.kaptcha.impl.DefaultKaptcha
        properties.setProperty("kaptcha.producer.impl", "com.google.code.kaptcha.impl.DefaultKaptcha");

        //文本实现类,默认 com.google.code.kaptcha.text.impl.DefaultTextCreator
        properties.setProperty("kaptcha.textproducer.impl", "com.google.code.kaptcha.text.impl.DefaultTextCreator");
        //文本集合，验证码值从此集合中获取
        properties.setProperty("kaptcha.textproducer.char.string", "123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ");
        //验证码长度,默认5
        properties.setProperty("kaptcha.textproducer.char.length", "4");

        //字体,默认Arial, Courier
        properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑");
        //字体大小,默认40px
        properties.setProperty("kaptcha.textproducer.font.size", "30");
        //字体颜色，合法值： r,g,b  或者 white,black,blue.
        properties.setProperty("kaptcha.textproducer.font.color", "black");
        //文字间隔
        properties.setProperty("kaptcha.textproducer.char.space", "2");

        //干扰实现类,默认com.google.code.kaptcha.impl.DefaultNoise
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.DefaultNoise");
        // 干扰 颜色,合法值: r,g,b 或者 white,black,blue.
        properties.setProperty("kaptcha.noise.color", "255,96,0");
        //这里使用自定义的干扰实现
        properties.setProperty("kaptcha.noise.impl", "com.hua.util.config.NoNoiseConfig");

        //图片样式： 
        //水纹com.google.code.kaptcha.impl.WaterRipple  默认
        //鱼眼com.google.code.kaptcha.impl.FishEyeGimpy
        //阴影com.google.code.kaptcha.impl.ShadowGimpy
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.WaterRipple");
        //这里使用自定义样式.提高清晰度
        properties.setProperty("kaptcha.obscurificator.impl", "com.hua.util.config.NoWaterRippleConfig");

        //背景实现类,默认com.google.code.kaptcha.impl.DefaultBackground
        properties.setProperty("kaptcha.background.impl", "com.google.code.kaptcha.impl.DefaultBackground");
        //背景颜色渐,开始颜色,默认 light grey 实践证明 这放light grey 或者 grey 都会报错
        properties.setProperty("kaptcha.background.clear.from", "gray");
        //背景颜色渐变,结束颜色,默认 white
        properties.setProperty("kaptcha.background.clear.to", "white");

        //文字渲染器,默认 com.google.code.kaptcha.text.impl.DefaultWordRenderer
        properties.setProperty("kaptcha.word.impl", "com.google.code.kaptcha.text.impl.DefaultWordRenderer");

        //session key,默认 KAPTCHA_SESSION_KEY
        properties.setProperty("kaptcha.session.key", "code");
        //session date,默认 KAPTCHA_SESSION_DATE
        properties.setProperty("kaptcha.session.date", "KAPTCHA_SESSION_DATE");

        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);

        return defaultKaptcha;
    }


}


